// Variables para crear hojas
var SHEET_NAME = "Hoja 1";


// Variables para el manejo de hojas
var ss = SpreadsheetApp.getActiveSpreadsheet();
var hoja = ss.getSheetByName(SHEET_NAME);

// Variables obtenidas de funciones por return
var e_number;

// función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e.

function doPost(e){

  return handleRepose(e) ;

}



  // Código para crear o obtener una hoja llamada '_Logs' para almacenar los posibles errores en la entrada de datos
function crearHojaLogs() {

  // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta.
  var sheet_log = ss.getSheetByName('_Logs');
  if (!sheet_log) {
    ss.insertSheet('_Logs');
    sheet_log = ss.getSheetByName('_Logs');
  }
  // Registramos el número de ejecuciones
  if (sheet_log.getRange('A1').isBlank()) {
    sheet_log.getRange('A1').setValue(1);

   // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1
  } else {
    sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1);
  }

  // Devuelve el número de ejecución y lo almacena en la variable e_number
  e_number = sheet_log.getRange('A1').getValue();
  return e_number;
}

// Función principal

function handleRepose(e) {

  //llamamos a la función que crea la hoja de errores
    crearHojaLogs()
 
   try{

    // Cabecera
    // La creamos si no existe
    if(hoja.getRange('A1').isBlank()){
      var h_row = []; //contenedor para almacenar con push los nombres de las cabeceras
      
      h_row.push("cen");  // current execution number
      h_row.push("fecha-hora");
      h_row.push("nombre");
      h_row.push("Humedad %");
      h_row.push("Temperatura ºC");


      hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]);
    }

    // Parseamos los datos entrantes, que vienen en formato JSON

    // se explicará como llamar los datos dentro del JSON con mas detalle en otro ejercicio
    var jsonData = JSON.parse(e.postData.contents);
    var row = [];
      row.push(e_number);
      row.push(new Date()); 
      row.push(jsonData.end_device_ids.device_id);
      row.push(jsonData.uplink_message.decoded_payload.Humedad !== undefined ? jsonData.uplink_message.decoded_payload.Humedad.toString().replace('.', ',') : '');
      row.push(jsonData.uplink_message.decoded_payload.Temperatura !== undefined ? jsonData.uplink_message.decoded_payload.Temperatura.toString().replace('.', ',') : '');

      
      row.push(jsonData.uplink_message.rx_metadata.rssi);
 
    hoja.appendRow(row);



    } catch (err) {
      // Guardamos los errores que haya podido haber
      var sheet_log = ss.getSheetByName('_Logs');
      sheet_log.appendRow([e_number, err.message]);
    }

       
}